<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<!--
Generated from $Fink: quick-start-pkg.en.xml,v 1.11 2007/02/23 22:04:56 rangerrick Exp $
-->
<title>Fink Documentation - Create a Fink Package - Tutorial</title></head><body>
<table width="100%" cellspacing="0">
<tr valign="bottom">
<td align="center">
Available Languages:  | 
English | 
<a href="quick-start-pkg.fr.html">Fran&ccedil;ais</a> | 
</td>
</tr>
</table>
<h1 style="text-align: center;">Create a Fink Package - Tutorial</h1>
<p>
This document is for people who want to create a package for <tt style="white-space: nowrap;">Fink</tt>. It
complements the 
<a href="http://www.finkproject.org/doc/packaging/index.php">Packaging Manual</a>, 
which is a more detailed and comprehensive document.
</p>
<p>
We'll guide you through the process of making a Fink package.





First we explain the general procedure. Then we show the creation of an example Fink
package for <a href="http://maxwell.sourceforge.net">maxwell</a>.
</p>
<h2>Contents</h2><ul><li><a href="#howtostart"><b>1 How to Start</b></a><ul><li><a href="#howtostart.Learn">1.1 Learn the Basics</a></li><li><a href="#howtostart.Make">1.2 Make your Package</a></li><li><a href="#howtostart.Validate">1.3 Validate your Package</a></li><li><a href="#howtostart.Submit">1.4 Submit your Package</a></li></ul></li><li><a href="#example"><b>2 Example - the Maxwell Package</b></a><ul><li><a href="#example.Basics">2.1 Basics</a></li><li><a href="#example.build">2.2 Build</a></li></ul></li></ul><h2><a name="howtostart">1 How to Start</a></h2>



<h3><a name="howtostart.Learn">1.1 Learn the Basics</a></h3>
<p>
<b>Please note:</b> In this document we assume that <tt style="white-space: nowrap;">fink</tt> is installed into
<tt style="white-space: nowrap;">/sw</tt> - the default location. If you see a codeblock similar to
</p>
<pre>
finkdev% somecommand
</pre>
<p>
it means that you have to type <tt style="white-space: nowrap;">somecommand</tt> into Terminal.app or
any other terminal on your Mac.
</p>
<p>
First you should learn a few basic concept about how to build Fink packages. 
We suggest you:
</p>

<ul>
<li>
Have a look at 
<a href="http://www.finkproject.org/doc/UsingFink.pdf">
Using Fink: A Developer's How To</a>
(2MB pdf file) - slides from a presentation at the 
<a href="http://conferences.oreillynet.com/macosx2002/">O'Reilly Mac OS X Conference</a>.
</li>
<li>




Read and try to understand the 
<a href="#example.basics">example here</a>.
</li>
<li>
Look at other, similar packages in your 
<tt style="white-space: nowrap;">/sw/fink/dists/unstable/main/finkinfo/</tt> directory or 
<a href="http://fink.cvs.sourceforge.net/fink/dists/">
in the online CVS repository</a> and take one (or several) info file(s) as 
a starting point.
</li>
<li>
Search the 
<a href="http://sourceforge.net/tracker/?atid=414256&amp;group_id=17203">Package Submission Tracker</a>
if somebody else already tried to package the same and the 
<a href="http://sourceforge.net/tracker/?atid=371315&amp;group_id=17203">Package Request Tracker</a>
if there is a matching request. You might find valuable information there.
</li>
<li>
Maybe browse the 
<a href="http://www.finkproject.org/doc/packaging/index.php">Packaging Manual</a>
if you think you need more detailed information.
</li>
</ul>




<h3><a name="howtostart.Make">1.2 Make your Package</a></h3>
<p>
Save your new info file (and patch file - if needed) into your 
<tt style="white-space: nowrap;">/sw/fink/dists/local/main/finkinfo/</tt> directory. The file should be named
<tt style="white-space: nowrap;">packagename.info</tt> (and <tt style="white-space: nowrap;">packagename.patch</tt>) where 
<tt style="white-space: nowrap;">packagename</tt> is the name of your package. If this directory doesn't 
exist you need to create it manually.
</p>
<p>
<b>Please note:</b>
Make sure you are running an up-to-date <tt style="white-space: nowrap;">fink</tt> tool by running
</p>
<pre>
finkdev% fink selfupdate
</pre>
<p>
Now run
</p>
<pre>
finkdev% fink configure
</pre>
<p>
and set the verbosity level to the highest value and enable the unstable tree. 
After that you should check if <tt style="white-space: nowrap;">fink</tt> found your package by typing:
</p>
<pre>
finkdev% fink list packagename
</pre>
<p>
If it doesn't show up in the list you might need to change your
<a href="http://www.finkproject.org/doc/users-guide/conf.php#optional">fink configuration file</a>
to include your local tree.
</p>
<p>
Maybe you also have to manually re-index your packages by typing:
</p>
<pre>
finkdev% fink index
</pre>
<p>
If you need more information read the 
<a href="http://www.finkproject.org/doc/packaging/index.php">Packaging Manual</a>
or use one or more of different 
<a href="http://www.finkproject.org/help/index.php">help sources</a>.
You should also subscribe to the 
<a href="http://www.finkproject.org/lists/index.php">fink-devel</a>
mailing list.
</p>



<h3><a name="howtostart.Validate">1.3 Validate your Package</a></h3>
<p>
During validation of your package you should set the verbose level of 
<tt style="white-space: nowrap;">fink</tt> to the highest possible value. Check the section on the
<a href="http://www.finkproject.org/doc/users-guide/conf.php#optional">fink configuration file</a>
about how to change the verbose level.
</p>
<p>
Check if your package passes validation by running:
</p>
<pre>
finkdev% fink validate /sw/fink/dists/local/main/finkinfo/packagename.info
</pre>
<p>
If the validation passes try to build your package with:
</p>
<pre>
finkdev% fink -m --build-as-nobody rebuild packagename
</pre>
<p>
Watch the output of the build process carefully for errors or warnings.
Especially make sure that everything is installed into the destination directory
(which is located at <tt style="white-space: nowrap;">/sw/src/root-packagename-%v-%r/sw</tt>) from where
<tt style="white-space: nowrap;">fink</tt> builds the binary package. Nothing should be installed directly into
<tt style="white-space: nowrap;">/sw</tt>.
</p>
<p>
If you use the <tt style="white-space: nowrap;">--keep-build-dir</tt> or <tt style="white-space: nowrap;">-k</tt> option to <tt style="white-space: nowrap;">fink</tt>, it will 
keep the build directory. This is where <tt style="white-space: nowrap;">fink</tt> expands the downloaded source and 
where the package gets built. This might help if you need to debug the build
process. Type <tt style="white-space: nowrap;">man fink</tt> for details.
</p>
<p>
You may also want to use the <tt style="white-space: nowrap;">--keep-root-dir</tt> or <tt style="white-space: nowrap;">-K</tt> option, it will keep the destination directory. This is where <tt style="white-space: nowrap;">fink</tt> builds the installation tree for the package. Comparing build and destination directories may help you debugging the installation phase.
</p>
<p>
If the build succeeds check the content of the binary package with:
</p>
<pre>
finkdev% dpkg -c /sw/fink/dists/local/main/binary-darwin-powerpc/packagename.deb
</pre>
<p>
Check if all files that you think should be in the package are actually
in the .deb file. Again: make sure that nothing is installed directly into 
<tt style="white-space: nowrap;">/sw</tt>.
</p>
<p>
Now you can also validate the binary package by doing:
</p>
<pre>
finkdev% fink validate /sw/fink/dists/local/main/binary-darwin-powerpc/packagename.deb
</pre>
<p>
If all is well install the package with:
</p>
<pre>
finkdev% fink install packagename
</pre>
<p>
and test the functionality of your package.
</p>
<p>
If any of the above steps fail try to correct the errors and restart at the 
top with the <tt style="white-space: nowrap;">fink validate</tt> step.
</p>



<h3><a name="howtostart.Submit">1.4 Submit your Package</a></h3>
<p>
If your package passes all the checks above you now can submit the info 
(and patch if necessary) file to the 
<a href="http://sourceforge.net/tracker/?func=add&amp;group_id=17203&amp;atid=414256">
Package Submission Tracker</a>.
</p>
<p>
A package reviewer should now take a look at your package submission and
add it to the Fink unstable tree if the package seems ready. If not you
will be asked to bring the package into compliance with the policy.
</p>
<p>
<b>Important:</b>
</p>
<ul>
<li>
If feasible add multiple items one at a time to the same tracker item 
(e.g. info and patch files).
</li>
<li>
Add a note whether your package is intended for the <tt style="white-space: nowrap;">10.3</tt> tree, 
<tt style="white-space: nowrap;">10.4</tt> tree, or both,
</li>
<li>
which <tt style="white-space: nowrap;">section</tt> (graphics, sci, etc.) you feel it belongs in, and
</li>
<li>
that you have run the command <tt style="white-space: nowrap;">fink validate</tt> on your info and deb files.
</li>
<li>
Set the <tt style="white-space: nowrap;">Group</tt> field of the tracker item to 
<tt style="white-space: nowrap;">Undergoing Validation</tt> when you create the new tracker. Also change it 
back to <tt style="white-space: nowrap;">Undergoing Validation</tt> whenever you fixed problems package 
reviewers found in your submission.
</li>
<li>
Set the <tt style="white-space: nowrap;">Category</tt> field of the tracker item to the correct value.
</li>
</ul>



<h2><a name="example">2 Example - the Maxwell Package</a></h2>







<h3><a name="example.Basics">2.1 Basics</a></h3>
<p>
First Maxwell. Lets open our editor and get started. We know the package name,
its version and where to grab the source tar ball from. So we'll type this into
our editor window:
</p>
<pre>
Package: maxwell
Version: 0.5.1
Revision: 1
Source: mirror:sourceforge:%n/%n-%v.tar.gz
</pre>
<p>
So we have the name and version which are easy to understand, but what of these
other two fields? Revision is the "version" of the Fink package,
Version, on the other hand is the upstream source version. Since this is the
first time we have attempted to make a maxwell-0.5.1 package, it is revision 1.
</p>
<p>
The Source field is where <tt style="white-space: nowrap;">fink</tt> will grab the source tarball from. Because 
<a href="http://sourceforge.net">Sourceforge</a> has a system where
packages are mirrored around the world, and since <tt style="white-space: nowrap;">fink</tt> knows about it,
we use <tt style="white-space: nowrap;">mirror:sourceforge:</tt>. <tt style="white-space: nowrap;">%n</tt> expands to the package name,
maxwell, and <tt style="white-space: nowrap;">%v</tt> expands to the package version, 0.5.1.
</p>
<p>
Now we can save this as <tt style="white-space: nowrap;">maxwell.info</tt> in 
<tt style="white-space: nowrap;">/sw/fink/dists/local/main/finkinfo/</tt>. That done, we can see how we
are doing by using <tt style="white-space: nowrap;">fink validate</tt>.
</p>
<pre>
finkdev% fink validate maxwell.info 
Validating package file maxwell.info...
Error: Required field "Maintainer" missing. (maxwell.info)
</pre>
<p>
Oops, looks like we missed a couple of fields. Lets add some more:
</p>
<pre>
Maintainer: John Doe &lt;jdoe@example.com&gt;
HomePage: http://maxwell.sourceforge.net
License: MIT
</pre>
<p>
We add ourselves as the maintainer of the Fink maxwell package and add it's
homepage, looking at the sourceforge project page, we see that it is MIT
Licensed, so we add that too. Now lets try again:
</p>
<pre>
finkdev% fink validate maxwell.info
Validating package file maxwell.info...
Warning: Unknown license "MIT". (maxwell.info)
Error: No MD5 checksum specified for "source". (maxwell.info)
Error: No package description supplied. (maxwell.info)
</pre>
<p>
Aaargh! We seem to be getting worse, not better, never mind, head off over to
the <a href="http://www.finkproject.org/doc/packaging/policy.php#licenses">
Packaging Manual</a> to see what is allowed for License, and we see that we
can just change MIT to OSI-Approved, as the MIT license is, indeed, approved
by the <a href="http://www.opensource.org/">OSI</a>. We can also grab a
one line description of the package from the homepage. So we change those:
</p>
<pre>
License: OSI-Approved
Description: Mac OS X S.M.A.R.T. Tool
</pre>
<p>
But what to do about that warning about MD5 checksums? Well, why don't we just
ask <tt style="white-space: nowrap;">fink</tt> to fetch the source?
</p>
<pre>
finkdev% fink fetch maxwell
/usr/bin/sudo /sw/bin/fink  fetch maxwell
Reading package info...
Updating package index... done.
Information about 3377 packages read in 30 seconds.
WARNING: No MD5 specified for Source of package maxwell-0.5.1-1 \
Maintainer: John Doe &lt;jdoe@example.com&gt;
curl -f -L -O http://distfiles.opendarwin.org/maxwell-0.5.1.tar.gz
  % Total    % Received % Xferd  Average Speed          Time             Curr.
                                 Dload  Upload Total    Current  Left    Speed
  0     0    0     0    0     0      0      0 --:--:--  0:00:00 --:--:--     0
curl: (22) The requested URL returned error: 404
### execution of curl failed, exit code 22
Downloading the file "maxwell-0.5.1.tar.gz" failed.

(1)      Give up
(2)      Retry the same mirror
(3)      Retry another mirror from your continent
(4)      Retry another mirror
(5)      Retry using next mirror set "sourceforge"

How do you want to proceed? [3] 5
curl -f -L -O http://west.dl.sourceforge.net/sourceforge/maxwell/maxwell-0.5.1.tar.gz
  % Total    % Received % Xferd  Average Speed          Time             Curr.
                                 Dload  Upload Total    Current  Left    Speed
100  7856  100  7856    0     0  19838      0  0:00:00  0:00:00  0:00:00 6511k
</pre>
<p>
The tarball couldn't be downloaded from the Fink mirrors (distfiles) since
your package is not added to the distribution yet. That's why you need to 
change to the next mirror set. More information about this problem is in the
<a href="http://www.finkproject.org/faq/comp-general.php#master-problems">FAQ</a>.
</p>
<p>
So we can now get the md5 by running <tt style="white-space: nowrap;">md5sum /sw/src/maxwell-0.5.1.tar.gz</tt>,
and add it to the .info file:
</p>
<pre>
Source-MD5: ce5c354b2fed4e237524ad0bc59997a3
</pre>
<p>
And now we find that <tt style="white-space: nowrap;">fink validate</tt> passes, yippee!
</p>



<h3><a name="example.build">2.2 Build</a></h3>
<p>
Now we can build the package, let's just try it:
</p>
<pre>
finkdev% fink -m --build-as-nobody rebuild maxwell
/usr/bin/sudo /sw/bin/fink  build maxwell
Reading package info...
Updating package index... done.
Information about 3498 packages read in 32 seconds.
The following package will be built:
 maxwell
gzip -dc /sw/src/maxwell-0.5.1.tar.gz | /sw/bin/tar -xvf -  \
--no-same-owner --no-same-permissions 
maxwell-0.5.1/
maxwell-0.5.1/LICENSE
maxwell-0.5.1/Makefile
maxwell-0.5.1/maxwell.8
maxwell-0.5.1/maxwell.c
maxwell-0.5.1/README
./configure --prefix=/sw 
Can't exec "./configure": No such file or directory at \
/sw/lib/perl5/Fink/Services.pm line 403.
</pre>
<p>
Hmm, well that did not go all that well. Let's read the README 
(which you can find at <tt style="white-space: nowrap;">/sw/src/maxwell-0.5.1-1/maxwell-0.5.1/README</tt>)
and see what it says...
</p>
<pre>
To build type 'make'.

To install in /usr/local type 'sudo make install', to install elsewhere, type 
'sudo make install prefix=/elsewhere'
</pre>
<p>
Ah hah, so we can't use the default CompileScript and InstallScript here, 
we need our own, that's easily resolved:
</p>
<pre>
CompileScript: make
InstallScript: &lt;&lt;
#! /bin/sh -ev
make install prefix=%i
&lt;&lt;
</pre>
<p>
We need to use <tt style="white-space: nowrap;">prefix=%i</tt> since <tt style="white-space: nowrap;">fink</tt> builds the binary deb file
from the files in <tt style="white-space: nowrap;">%i</tt>. These files are later installed into 
<tt style="white-space: nowrap;">%p</tt> (which is <tt style="white-space: nowrap;">/sw</tt> by default) when you use 
<tt style="white-space: nowrap;">fink install maxwell</tt>. For more details about <tt style="white-space: nowrap;">%p</tt> and
<tt style="white-space: nowrap;">%i</tt> please consult the 
<a href="http://www.finkproject.org/doc/packaging/format.php#percent">
Packaging Manual</a>.
</p>
<p>
Normally the lines in the Script fields are passed line by line to the shell.
But the <tt style="white-space: nowrap;">#! /bin/sh -ev</tt> line makes <tt style="white-space: nowrap;">fink</tt> run it as a separate script.
The parameter <tt style="white-space: nowrap;">-e</tt> means "die on error" and <tt style="white-space: nowrap;">-v</tt> means
"verbose".
</p>
<p>
So, let's validate the package again and try to rebuild it:
</p>
<pre>
finkdev% fink validate maxwell.info 
Validating package file maxwell.info...
Package looks good!
finkdev% fink -m --build-as-nobody rebuild maxwell
/usr/bin/sudo /sw/bin/fink  build maxwell
Reading package info...
Updating package index... done.
Information about 3498 packages read in 32 seconds.
The following package will be built:
 maxwell
gzip -dc /sw/src/maxwell-0.5.1.tar.gz | /sw/bin/tar -xvf -  \
--no-same-owner --no-same-permissions 
maxwell-0.5.1/
maxwell-0.5.1/LICENSE
maxwell-0.5.1/Makefile
maxwell-0.5.1/maxwell.8
maxwell-0.5.1/maxwell.c
maxwell-0.5.1/README
make
cc  -L/sw/lib -c -o maxwell.o maxwell.c
cc  -I/sw/include -o maxwell -framework IOKit -framework CoreFoundation maxwell.o
/bin/rm -rf /sw/src/root-maxwell-0.5.1-1
/bin/mkdir -p /sw/src/root-maxwell-0.5.1-1/sw
/bin/mkdir -p /sw/src/root-maxwell-0.5.1-1/DEBIAN
/var/tmp/tmp.1.A3sRc2
#! /bin/sh -ev
make install prefix=/sw/src/root-maxwell-0.5.1-1/sw
/usr/bin/install -d -m 755 /sw/src/root-maxwell-0.5.1-1/sw/doc/maxwell
/usr/bin/install -m 644 LICENSE /sw/src/root-maxwell-0.5.1-1/sw/doc/maxwell/LICENSE
/usr/bin/install -m 644 README /sw/src/root-maxwell-0.5.1-1/sw/doc/maxwell/README
/usr/bin/install -d -m 755 /sw/src/root-maxwell-0.5.1-1/sw/bin
/usr/bin/install -m 755 maxwell /sw/src/root-maxwell-0.5.1-1/sw/bin/maxwell
/usr/bin/install -d -m 755 /sw/src/root-maxwell-0.5.1-1/sw/man/man8
/usr/bin/install -m 644 maxwell.8 /sw/src/root-maxwell-0.5.1-1/sw/man/man8/maxwell.8
/bin/rm -f /sw/src/root-maxwell-0.5.1-1/sw/info/dir \
/sw/src/root-maxwell-0.5.1-1/sw/info/dir.old \
/sw/src/root-maxwell-0.5.1-1/sw/share/info/dir \
/sw/src/root-maxwell-0.5.1-1/sw/share/info/dir.old
Writing control file...
Finding prebound objects...
Writing dependencies...
Writing package script postinst...
dpkg-deb -b root-maxwell-0.5.1-1 /sw/fink/dists/local/main/binary-darwin-powerpc
dpkg-deb: building package `maxwell' in \
`/sw/fink/dists/local/main/binary-darwin-powerpc/maxwell_0.5.1-1_darwin-powerpc.deb'.
</pre>
<p>
Fink seems to have installed everything into the correct place: 
<tt style="white-space: nowrap;">/sw/src/root-maxwell-0.5.1-1</tt> from where the binary package 
<tt style="white-space: nowrap;">maxwell_0.5.1-1_darwin-powerpc.deb</tt> was built.
</p>
<p>
Also note how <tt style="white-space: nowrap;">fink</tt> automatically included some compiler flags to enable it to
access other Fink packages (e.g. <tt style="white-space: nowrap;">-I/sw/include</tt>).
</p>
<p>
Let's have a look at what is in the binary package:
</p>
<pre>
finkdev% dpkg -c \
/sw/fink/dists/local/main/binary-darwin-powerpc/maxwell_0.5.1-1_darwin-powerpc.deb
drwxr-xr-x root/admin        0 2004-07-15 09:40:38 ./
drwxr-xr-x root/admin        0 2004-07-15 09:40:39 ./sw/
drwxr-xr-x root/admin        0 2004-07-15 09:40:39 ./sw/bin/
-rwxr-xr-x root/admin    29508 2004-07-15 09:40:39 ./sw/bin/maxwell
drwxr-xr-x root/admin        0 2004-07-15 09:40:39 ./sw/doc/
drwxr-xr-x root/admin        0 2004-07-15 09:40:39 ./sw/doc/maxwell/
-rw-r--r-- root/admin     1076 2004-07-15 09:40:39 ./sw/doc/maxwell/LICENSE
-rw-r--r-- root/admin     1236 2004-07-15 09:40:39 ./sw/doc/maxwell/README
drwxr-xr-x root/admin        0 2004-07-15 09:40:39 ./sw/man/
drwxr-xr-x root/admin        0 2004-07-15 09:40:39 ./sw/man/man8/
-rw-r--r-- root/admin     1759 2004-07-15 09:40:39 ./sw/man/man8/maxwell.8
drwxr-xr-x root/admin        0 2004-07-15 09:40:39 ./sw/var/
drwxr-xr-x root/admin        0 2004-07-15 09:40:39 ./sw/var/lib/
drwxr-xr-x root/admin        0 2004-07-15 09:40:39 ./sw/var/lib/fink/
drwxr-xr-x root/admin        0 2004-07-15 09:40:39 ./sw/var/lib/fink/prebound/
drwxr-xr-x root/admin        0 2004-07-15 09:40:39 ./sw/var/lib/fink/prebound/files/
-rw-r--r-- root/admin       16 2004-07-15 09:40:39 ./sw/var/lib/fink/prebound/files/maxwell.pblist
</pre>
<p>
Seems ok, right? But we have to verify that it complies with the Fink
packaging policy. So let's validate it with:
</p>
<pre>
finkdev% fink validate \
/sw/fink/dists/local/main/binary-darwin-powerpc/maxwell_0.5.1-1_darwin-powerpc.deb 
Validating .deb file \
/sw/fink/dists/local/main/binary-darwin-powerpc/maxwell_0.5.1-1_darwin-powerpc.deb...
Warning: File installed into deprecated directory /sw/doc/
                                        Offender is /sw/doc/
Warning: File installed into deprecated directory /sw/doc/
                                        Offender is /sw/doc/maxwell/
Warning: File installed into deprecated directory /sw/doc/
                                        Offender is /sw/doc/maxwell/LICENSE
Warning: File installed into deprecated directory /sw/doc/
                                        Offender is /sw/doc/maxwell/README
Warning: File installed into deprecated directory /sw/man/
                                        Offender is /sw/man/
Warning: File installed into deprecated directory /sw/man/
                                        Offender is /sw/man/man8/
Warning: File installed into deprecated directory /sw/man/
                                        Offender is /sw/man/man8/maxwell.8
</pre>
<p>
Oops... something is wrong. Let's consult the 
<a href="http://www.finkproject.org/doc/packaging/fslayout.php#fhs">Packaging Manual</a>
again. It tells us to install man pages into <tt style="white-space: nowrap;">/sw/share/man</tt> and files such
as <tt style="white-space: nowrap;">README</tt> into <tt style="white-space: nowrap;">/sw/share/doc/%n</tt>. If we look into the 
<tt style="white-space: nowrap;">Makefile</tt> of maxwell we see that the mandir and datadir can be set:
</p>
<pre>
prefix = /usr/local
mandir = ${prefix}/man
man8dir = ${mandir}/man8
bindir = ${prefix}/bin
datadir = ${prefix}/doc/maxwell
</pre>
<p>
One easy way to fix that is to change the InstallScript to
</p>
<pre>
make install prefix=%i mandir=%i/share/man datadir=%i/share/doc/%n
</pre>
<p>
and rebuild the package with
</p>
<pre>
finkdev% fink -m --build-as-nobody rebuild maxwell
</pre>
<p>
(We used <tt style="white-space: nowrap;">fink rebuild</tt> because <tt style="white-space: nowrap;">fink build</tt> would not do 
anything since the package was already built successfully.)
</p>
<p>
Review the contents of your deb file (with <tt style="white-space: nowrap;">dpkg -c</tt>) to see where 
the files got installed now. Then validate the deb file again with 
<tt style="white-space: nowrap;">fink validate</tt>. If all is well you can install the new package with:
</p>
<pre>
finkdev% fink install maxwell
/usr/bin/sudo /sw/bin/fink  install maxwell
Information about 3377 packages read in 30 seconds.
The following package will be installed or updated:
 maxwell
dpkg -i /sw/fink/dists/local/main/binary-darwin-powerpc/maxwell_0.5.1-1_darwin-powerpc.deb
Selecting previously deselected package maxwell.
(Reading database ... 56046 files and directories currently installed.)
Unpacking maxwell (from .../maxwell_0.5.1-1_darwin-powerpc.deb) ...
Setting up maxwell (0.5.1-1) ...
</pre>
<p>
You can now run the software by typing
</p>
<pre>
finkdev% maxwell
</pre>
<p>
Congratulations, you just finished your first Fink package! Now try to
package something yourself by following the 
<a href="http://www.finkproject.org/doc/quick-start-pkg/index.php">
Packaging tutorial</a> from the beginning.
</p>
<p>
We are looking forward to your contributions to Fink!
</p>



<hr><h2>Copyright Notice</h2><p>Copyright (c) 2001 Christoph Pfisterer,
Copyright (c) 2001-2011 The Fink Project.
You may distribute this document in print for private purposes,
provided the document and this copyright notice remain complete and
unmodified. Any commercial reproduction and any online publication
requires the explicit consent of the author.</p><hr>
<p>Generated from <i>$Fink: quick-start-pkg.en.xml,v 1.11 2007/02/23 22:04:56 rangerrick Exp $</i></p></body></html>
